package dao;

import dao.padrao.GenericDAO;
import entidade.Evento;
import entidade.Usuario;
import entidade.UsuarioEvento;
import java.util.ArrayList;
import java.util.List;
public class UsuarioEventoDAO extends GenericDAO<UsuarioEvento, Long>
{
    public List<UsuarioEvento> buscarUsuarioEvento(Usuario u, Evento e)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.usuario.id = :usuarioID and event.evento.id = :eventoID").setParameter("usuarioID", u.getId()).setParameter("eventoID", e.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }

    public List<UsuarioEvento> buscarEventoUsuario(Usuario u)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.usuario.id = :usuarioID ").setParameter("usuarioID", u.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }

    public List<UsuarioEvento> buscarEventoGerencia(Usuario u)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.gerenciador = 1 and event.usuario.id = :usuarioID ").setParameter("usuarioID", u.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }

    public List<UsuarioEvento> buscarGerenciadoresEvento(Evento e)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.gerenciador = 1 and event.evento.id = :eventoID ").setParameter("eventoID", e.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }

    public List<UsuarioEvento> buscarParticipantesEvento(Evento e)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.evento.id = :eventoID ").setParameter("eventoID", e.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }

    public List<UsuarioEvento> buscarEvento(Evento evento)
    {
        List<UsuarioEvento> resultado = this.getEntityManager().createQuery("select event from UsuarioEvento event where event.evento.id = :eventoID ").setParameter("eventoID", evento.getId()).getResultList();
        if (resultado.isEmpty())
        {
            return new ArrayList<UsuarioEvento>();
        }
        else
        {
            return resultado;
        }
    }
}
